package com.explorati.LeetCode1207.uniqueOccurrences;

import java.util.*;

/**
 * @ Author : Weijian_Wang
 * @ Date : Created in 21:39 2020/10/28 0028
 * @ Description ：
 */
public class Solution {
    /**
     * 给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
     *
     * 如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
     * @param arr
     * @return
     */
    public boolean uniqueOccurrences(int[] arr) {
        //1.Map<Integer, 次数>  Set记录有多少不同的整数    需遍历完全
        //2.遍历Set，用List记录次数，若有重复即停止 返回false

        Map<Integer, Integer> map = new HashMap<>();
        Set<Integer> set = new TreeSet<>();
        for(int a : arr) {
            if(!map.containsKey(a)) {
                map.putIfAbsent(a, 1);
            }else {
                map.put(a, map.get(a) + 1);
            }
            set.add(a);
        }

        List<Integer> list = new ArrayList<>();
        //num为不同的整数
        Iterator iter = set.iterator();
        int num, count;
        while(iter.hasNext()) {
            num = (int)iter.next();
            count = map.get(num);
            if(list.contains(count)) {
                return false;
            }else {
                list.add(count);
            }
        }

        return true;
    }
}
